iT邦幫忙

2024 iThome 鐵人賽

DAY 9
0
DevOps

今天不學遺傳學,跟著Kubernetes種豌豆系列 第 9

Day9. I am watching you 👀

  • 分享至 

  • xImage
  •  

📹 K8s本身僅提供部分metrics監控功能 (addon),而且其儲存屬於in-memory,資料非持久性儲存,不過設計遵循CNCF監控與分析的OpenMetrics標準,所以相容外部開源軟體像是Prometheus及Datadog等,可以藉此取得更完整的監控機制,

  • Metrics API: 基礎的metrics,用以支援自動擴展機制的HPA (HorizontalPodAutoscaler)及VPA (VerticalPodAutoscaler)
  • metrics-server: 實現Metrics API,參考文件進行安裝
    • kubectl apply -f https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/components.yaml

https://ithelp.ithome.com.tw/upload/images/20240813/20168178Jb4XABYrsD.png
Resource Metrics Pipeline (重製官網圖片)

  1. kubelet發送資訊給container runtime (符合CRI)
  2. kubelet內的cAdvisor負責收整資訊,存到指定的目錄 (directory)
  3. 透過指令kubelet logs抓取紀錄時,由kubelet讀取此log file回傳

監控指標

  • Node-Level
    • Cluster內的node
    • node的健康狀態
    • node的表現指標
      • CPU 使用
      • Memory 使用
      • 網路活動
      • Disk 使用
  • Pod-Level
    • 執行中的pods數量
    • pod的表現指標
      • CPU consumption
      • Memory usage

log哪裡看 ?

container本身及有log功能,而經K8s pod的外層管理亦可抓取,如果container重啟,會保留一個終止container的logs;若整個pod都被踢出node,則對應的containers紀錄將不復存在

操作指令

# 顯示nodes及pods的cpu/memory 使用量
kubectl top <node/pod> <optional: name> -l <label>
# 取得pod及container的log
kubectl logs <pod_name>
# 多container時,須加以指定container 加上 -f 表示即時更新
kubectl logs <pod_name> -c <container_name>

https://ithelp.ithome.com.tw/upload/images/20240813/20168178CyyNd7KuXY.png


JSONPath Support

kubectl 支援jsonPath模板,用於篩選JSON object的欄位,如此一來便可以將資訊加以整理。表達式單層時以雙引號""包裹,多層時,外層雙引號"",內層文字 (text)單引號'',而windows則外層都需使用雙引號,詳細說明查官網,大致的處理判斷如下:

  • 檢視資料階層
  • 是list格式嗎,迭代時使用rangeend
  • 欄位名稱
  • 搜尋的值為何種內容
# 取得pod資料, 以jsonpath表達式篩選匯出內容
# 查找此物件的第0個item,的metadata,的name欄位
kubectl get pods -o=jsonpath='{.items[0].metadata.name}'
# 查找此物件的users,搜尋? 此物件@ 的name 為== "e2e",的user的password
kubectl get <某個資源> -o=jsonpath={.users[?(@.name=="e2e")].user.password}

# 迭代range所有*的 items,其metadata的name, tab, status的startTime,換行,結束(end
kubectl get pods -o=jsonpath="{range .items[*]}{.metadata.name}{'\t'}{.status.startTime}{'\n'}{end}"

在KodeKloud上有免費的課程JSON Path Test - Free Course,包含基本的說明及lab環境可以練習,推薦新手入門!

REF.


上一篇
Day8. 環境資源有限,據理分配
下一篇
Day10. 集中管理配置參數,公開與不公開的秘密
系列文
今天不學遺傳學,跟著Kubernetes種豌豆30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言